package com.demo.java.OD601_650.OD641;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【求小火车最多人时所在园区站点(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146973133
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); // 获取员工数量
        int[][] nums = new int[n][2];  // 存储每个员工的工作区域的起点和终点
        int max_site = 0;  // 记录最大的站点编号
        for (int i = 0; i < n; i++) {
            int start = in.nextInt(); // 获取区间的起点
            int end = in.nextInt(); // 获取区间的终点
            max_site = Math.max(max_site, Math.max(start, end));  // 更新最大站点编号
            nums[i] = new int[]{start, end};  // 存储区间
        }

        // 创建站点的集合，用于记录每个区间影响的站点
        ArrayList<Integer[]> sites = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            // 如果区间的起点大于终点，进行拆分
            if (nums[i][0] > nums[i][1]) {
                sites.add(new Integer[]{nums[i][0], max_site});
                sites.add(new Integer[]{1, nums[i][1]});
            } else {
                sites.add(new Integer[]{nums[i][0], nums[i][1]});
            }
        }

        // 创建一个哈希表，记录每个站点上经过的员工数量
        HashMap<Integer, Integer> site_map = new HashMap<>();
        for (Integer[] pair : sites) {
            // 遍历每个区间，更新站点的经过人数
            for (int i = pair[0]; i <= pair[1]; i++) {
                site_map.put(i, site_map.getOrDefault(i, 0) + 1);
            }
        }

        // 将哈希表转换为一个列表，并按人数进行排序
        LinkedList<Map.Entry<Integer, Integer>> site_count = new LinkedList<>(site_map.entrySet());

        // 先按照人数降序排列，如果人数相同，则按照站点编号升序排列
        site_count.sort((e1, e2) -> Integer.compare(e2.getValue(), e1.getValue()));
        site_count.sort(new Comparator<Map.Entry<Integer, Integer>>() {
            @Override
            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
                int res = o2.getValue() - o1.getValue();
                if (res == 0) {
                    res = o1.getKey() - o2.getKey();
                }
                return res;
            }
        });

        // 输出经过员工最多的站点
        System.out.println(site_count.get(0).getKey());
    }
}